﻿// Validaciones



function CustomerSearch() {

    var _I = this;
    var btn = $('#btnBuscar');
    var imgRoller = $('#imgRoller');
    var pnlResults = $('#pnlResults');
    var pnlSaveResults = $('#pnlSaveResult');
    var infoClienteNuevo = $('#infoClienteNuevo');
    var hidEmail = $('#hidEmail');
    var cboCumpleAnio = $('#cboCumpleAnio');


    $('#cboPais').change(function () {
        _I.OnCambiarPais(this);
    });

    this.AgregarFactura = function () {

        //    JsLocalization_CustomerSearch_LblFechaDeVenta
        //JsLocalization_CustomerSearch_LblFactura
        //JsLocalization_CustomerSearch_LblCampana

        var lastDiv = $('#pnlFacturas div.selector').last();
        var index = parseInt(lastDiv.attr('id').split('_')[2]);

        index = index + 1;

        var newDropDownElement = $('#cboCampania_1').clone().attr('id', 'cboCampania_' + index).attr('name', 'cboCampania_' + index);

        var strToAppend = '<div id="div_factu_' + index + '" class="selector">';
        strToAppend += '<p><span class="titlesmall">' + JsLocalization_CustomerSearch_LblFactura + ': </span><input id="txtFactura_' + index + '" name="txtFactura_' + index + '" runat="server" class="inputs" type="text" title="' + JsLocalization_CustomerSearch_FacturaTxtTitle + '" />';

        strToAppend += '<br /><span class="titlesmall" style="color: white">' + JsLocalization_CustomerSearch_LblFactura + ': </span>';
        strToAppend += '<input type="text" id="txtFacturaValid_' + index + '"  class="inputs" title="' + JsLocalization_CustomerSearch_FacturaTxtTitleValidation + '" maxlength="6" />';

        strToAppend += '<p><span class="titlesmall secondColumnSmall">' + JsLocalization_CustomerSearch_LblFechaDeVenta + ': </span> ';
        strToAppend += '<input type="text" id="txtFechaVenta_' + index + '" name="txtFechaVenta_' + index + '" class="inputs" title=" ' + JsLocalization_CustomerSearch_LblFechaDeVenta + '" /></p>';

        strToAppend += '<p><span class="titlesmall secondColumnSmall">' + JsLocalization_CustomerSearch_LblCampana + ': </span><span id="replaceMe"></span>';

        strToAppend += '<br /><span class="titlesmall secondColumnSmall" >' + JsLocalization_CustomerSearch_Cupon + ':</span>';
        strToAppend += '<input type="text" id="txtCodigoMarketing_' + index + '" name="txtCodigoMarketing_' + index + '" class="inputs txtcodigoMarketing" title="' + JsLocalization_CustomerSearch_CuponTitle + '" />';

        strToAppend += '</p><div class="clear"></div></div>';

        lastDiv.after(strToAppend);
        $('#txtFactura_' + index).inputHints();
        $('#txtFacturaValid_' + index).inputHints();

        $('#replaceMe').replaceWith(newDropDownElement);

        $('#txtFechaVenta_' + index).datepick({ dateFormat: 'dd/mm/yyyy' });
        $('#txtFechaVenta_' + index).val($('#txtFechaVenta_1').val());
    };


    this.isValidEmailAddress = function (emailAddress) {
        // otra opcion, no esta probada
        //[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
        var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
        return pattern.test(emailAddress);
    };

    this.ValidarEmailPorWs = function (email) {

        var Proxy = new serviceProxy("/Svc/ClientSearch.svc/");

        var resultado = false;
        Proxy.invoke("ValidarEmail", { emailaddress: email },
             function (result) {
                 resultado = result;

             }, function (err) {
                 var errorPanel = new ErrorPanel();
                 errorPanel.showError('Error', 'Ocurrió un error al cargar las provincias. Por favor reintente la operación');
             }, true);

        return resultado;
    };

    this.initializeEnterKeyEvent = function (areaCtr, func) {
        areaCtr.keydown(function (e) {

            var key = e.which || e.keyCode;

            if (key == 13) {
                func();
            }
        });
    };

    this.ValidarGuardar = function () {

        var isError = false;
        var errorPanel = new ErrorPanel();
        var errorStr = '';
        var separador = '';

        errorPanel.removeErrors();

        // Valida Email
        if (!_I.ValidarEmailPorWs($('#txtEmail').val())) { //if (!_I.isValidEmailAddress($('#txtEmail').val())) {
            errorStr += separador;
            errorStr += JsLocalization_CustomerSearch_ValidateEmail;
            isError = true;
            errorPanel.appendAsterisk('txtEmail');
            separador = '<br />';
        }

        // Valida doble email
        if ($('#txtEmail').val() != $('#txtEmailVerify').val()) {
            errorStr += separador;
            errorStr += JsLocalization_CustomerSearch_ValidateEmailMatch;
            isError = true;
            errorPanel.appendAsterisk('txtEmailVerify');
            separador = '<br />';
        }

        // Valido si el email está rebotado hard, tiene que cambiar el email
        if (hidEmail.val() != '') {
            if (hidEmail.val() == $('#txtEmail').val()) {
                errorStr += separador;
                errorStr += JsLocalization_CustomerSearch_ValidateEmailHardRejected;
                isError = true;
                errorPanel.appendAsterisk('txtEmail');
                separador = '<br />';
            }
        }

        // Valida DNI
        if ($('#txtDNI').val() == '' || $('#txtDNI').val() == $('#txtDNI').attr('title') || !_I.isIntegerNumber($('#txtDNI').val())) {
            errorStr += separador;
            errorStr += JsLocalization_CustomerSearch_ValidateIdentityDocument;
            isError = true;
            errorPanel.appendAsterisk('txtDNI');
            separador = '<br />';
        }

        // Valido el año
        var anio = cboCumpleAnio.val();
        var date = new Date();
        if (anio != "-1" && window._maximoEdad != undefined) {
            if ((date.getFullYear() - anio) < _maximoEdad) {
                errorStr += separador;
                errorStr += Jscript_Validacion_EdadMaxima.replace("{0}", _maximoEdad);
                isError = true;
                errorPanel.appendAsterisk('cboCumpleAnio');
                separador = '<br />';
            }
        }

        // Valido que las facturas sean iguales
        var cantidadInputs = $('input[id^="txtFactura_"]').length;
        var i;
        var j;
        for (i = 0; i < cantidadInputs; i++) {

            j = '' + (i + 1);
            var ctrlOriginal = $('#txtFactura_' + j);
            var ctrlValidacion = $('#txtFacturaValid_' + j);

            if ((ctrlOriginal.attr('title') != ctrlOriginal.val() || ctrlValidacion.attr('title') != ctrlValidacion.val()) &&
                (ctrlOriginal.val() != ctrlValidacion.val())) {
                errorPanel.appendAsteriskToJQControl(ctrlOriginal);
                isError = true;
                errorStr += separador;
                errorStr += JsLocalization_CustomerSearch_ValidateInvoice;
                separador = '<br />';
            }


            if (ctrlOriginal.val() != ctrlOriginal.attr('title') && ctrlOriginal.val().length > 0 && ctrlOriginal.val().length != 6) {
                errorPanel.appendAsteriskToJQControl(ctrlOriginal);
                isError = true;
                errorStr += separador;
                errorStr += JsLocalization_CustomerSearch_ValidateInvoiceLength;
                separador = '<br />';
            }

        }

        // Valido que si hay un cupon, se seleccione una promocion
        for (i = 0; i < cantidadInputs; i++) {

            j = '' + (i + 1);
            var ctrlCampania = $('#cboCampania_' + j);
            var ctrlCodigo = $('#txtCodigoMarketing_' + j);

            if (ctrlCodigo.val() != "" && ctrlCodigo.val() != ctrlCodigo.attr('title')) {
                if (ctrlCampania.val() == "-1") {
                    errorPanel.appendAsteriskToJQControl(ctrlCampania);
                    isError = true;
                    errorStr += separador;
                    errorStr += JsLocalization_CustomerSearch_PDV_CuponConCampania;
                    separador = '<br />';
                }
            }
        }



        if (isError) {
            errorPanel.showError(JsLocalization_CustomerSearch_ValidateErrorPanelTitle, errorStr);
        }

        return !isError;
    };

    this.isIntegerNumber = function (valor) {
        var RE = /^[0-9]*$/;
        return (RE.test(valor));
    };

    this.ValidateSearch = function () {

        var errorPanel = new ErrorPanel();
        errorPanel.hiddeMessage();
        var isError = false;
        var errorStr = '';
        var separador = '';

        // Si existe el elemento valido el buscar
        if ($('#txtSearchFactura').length == 1) {
            $('.searchFacturamarginRight').addClass('visibleNone');
            if ($('#txtSearchFactura').val() == '' || $('#txtSearchFactura').val() == $('#txtSearchFactura').attr('title') || $('#txtSearchFactura').val().length != 6) {
                isError = true;
                $('.searchFacturamarginRight').removeClass('visibleNone').addClass('visibleShow');
                errorStr += separador;
                errorStr += 'Debe seleccionar una factura de 6 dígitos';
                separador = '<br />';
            }
            else {
                $('.searchFacturamarginRight').removeClass('visibleShow').addClass('visibleNone');
            }
        }

        if ($('#txtDniEmail').val() == '' || $('#txtDniEmail').val() == $('#txtDniEmail').attr('title')) {
            $('#validationSearchEmail').removeClass('visibleNone').addClass('visibleShow');
            isError = true;
            errorStr += separador;
            errorStr += JsLocalization_CustomerSearch_ValidateIdentityDocument;
            separador = '<br />';
        }
        else {
            $('#validationSearchEmail').removeClass('visibleShow').addClass('visibleNone');
        }

        if (isError) {
            errorPanel.showError(JsLocalization_CustomerSearch_ValidateSearchTitle, errorStr);
        }

        return !isError;

    };

    this.OnCambiarPais = function () {

        var Proxy = new serviceProxy("/Svc/ClientSearch.svc/");
        var paisIdPar = parseInt($('#cboPais').val());

        if (paisIdPar != '') {
            var cboProvincia = $('#cboProvincia');

            cboProvincia.attr('disabled', 'disabled');

            Proxy.invoke("GetProvincias", { paisId: paisIdPar },
             function (result) {

                 cboProvincia.html('');

                 $.each(result, function () {

                     if (this.Id == '-1') {
                         cboProvincia.append($("<option selected='selected' />").val(this.Id).text(this.Nombre));
                     }
                     else {
                         cboProvincia.append($("<option />").val(this.Id).text(this.Nombre));
                     }
                 });

             }, function (err) {
                 var errorPanel = new ErrorPanel();
                 errorPanel.showError(JsLocalization_CustomerSearch_SaveResultErrorTitle, JsLocalization_CustomerSearch_ErrorOnLoadingStates);
             });

            cboProvincia.removeAttr('disabled');
        }
    };
}








